
package com.hlkj.pay.gateway.order;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import javax.servlet.http.HttpServletRequest;

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.pay.dto.order.NotifyOrderTransferDto;
import com.hlkj.pay.dto.order.OrderTransferVerifyDto;
import com.hlkj.pay.infrastructure.model.merchant.MerchantAppChannelDO;
import com.hlkj.pay.infrastructure.model.order.OrderTransferDO;
import com.hlkj.pay.infrastructure.model.pay.ProviderChannelConfigDO;

/**
 * @author HlpayTeam
 * @date 2024/11/06 13:28
 */
public interface IChannelTransferGateway {

    /**
     *
     * @param request
     * @param providerChannelConfigDO
     * @return
     */
    CommonResult<NotifyOrderTransferDto> orderStatusParse(HttpServletRequest request, ProviderChannelConfigDO providerChannelConfigDO);

    /**
     *
     * @param channelCode
     * @return
     */
    boolean extensionExist(String channelCode);
    /**
     *
     * @param channelCode
     * @return
     */
    boolean autoWithdraw(String channelCode);

    /**
     *
     * @param payOrderDO
     * @return
     */
    OrderTransferDO queryChannelOrder(OrderTransferDO payOrderDO);

    /**
     *
     * @param merchantAppChannelDO
     * @return
     */
    CommonResult<OrderTransferDO> submitChannelOrderApply(MerchantAppChannelDO merchantAppChannelDO, OrderTransferDO orderTransferDO);

    /**
     *
     * @param orderTransferVerifyDto
     * @param orderTransfer
     * @return
     */
    CommonResult<OrderTransferDO> submitTransferOrder(OrderTransferVerifyDto orderTransferVerifyDto, OrderTransferDO orderTransfer);


}
